package com.vlong.town.service.roleMenuRef;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.vlong.town.entity.roleMenuRef.RoleMenuRef;
import com.vlong.town.mapper.roleMenuRef.RoleMenuRefMapper;

/**
 * 角色-菜单-关联业务接口实现类
 * @author Assassin
 */
@Service
public class RoleMenuRefService{

	// Fields

	@Autowired
	private RoleMenuRefMapper roleMenuRefMapper;// 角色-菜单-关联DAO接口

	// Methods

   /**
	* 添加角色-菜单-关联
	* @param refId 标识信息-关联Id[主键值]
	* @param orgId 标识信息-机构Id
	* @param roleId 关联信息-角色Id
	* @param menuId 关联信息-菜单Id
	* @return Long refId 添加后的数据库主键值
	*/
	@Transactional
	public Long add(Long refId, Long orgId, Long roleId, Long menuId) {
		// 构造角色-菜单-关联参数实体
		RoleMenuRef roleMenuRef = new RoleMenuRef();
		roleMenuRef.setRefId(refId);// Set 标识信息-关联Id[主键值]
		roleMenuRef.setOrgId(orgId);// Set 标识信息-机构Id
		roleMenuRef.setRoleId(roleId);// Set 关联信息-角色Id
		roleMenuRef.setMenuId(menuId);// Set 关联信息-菜单Id
		// 调用角色-菜单-关联DAO接口
		this.roleMenuRefMapper.insert(roleMenuRef);
		return roleMenuRef.getRefId();
	}

   /**
	* 删除角色-菜单-关联
	* @param refId 主键值
	*/
	@Transactional
	public void delete(Long refId) {
		// 调用角色-菜单-关联DAO接口
		this.roleMenuRefMapper.delete(refId);
	}

   /**
	* 更新角色-菜单-关联
	* @param refId 标识信息-关联Id[主键值]
	* @param orgId 标识信息-机构Id
	* @param roleId 关联信息-角色Id
	* @param menuId 关联信息-菜单Id
	*/
	@Transactional
	public void edit(Long refId, Long orgId, Long roleId, Long menuId) {
		// 构造角色-菜单-关联参数实体
		RoleMenuRef roleMenuRef = new RoleMenuRef();
		roleMenuRef.setRefId(refId);// Set 标识信息-关联Id[主键值]
		roleMenuRef.setOrgId(orgId);// Set 标识信息-机构Id
		roleMenuRef.setRoleId(roleId);// Set 关联信息-角色Id
		roleMenuRef.setMenuId(menuId);// Set 关联信息-菜单Id
		// 调用角色-菜单-关联DAO接口
		this.roleMenuRefMapper.update(roleMenuRef);
	}

   /**
	* 主键查询角色-菜单-关联
	* @param refId 主键值
	* @return RoleMenuRef 实体
	*/
	@Transactional(readOnly = true)
	public RoleMenuRef queryById(Long refId) {
		// 调用角色-菜单-关联DAO接口
		return this.roleMenuRefMapper.selectById(refId);
	}

   /**
	* 根据条件查询角色-菜单-关联列表
	* @param refId 标识信息-关联Id[主键值]
	* @param orgId 标识信息-机构Id
	* @param roleId 关联信息-角色Id
	* @param menuId 关联信息-菜单Id
	* @return List<RoleMenuRef> 实体List
	*/
	@Transactional(readOnly = true)
	public List<RoleMenuRef> queryList(Long refId, Long orgId, Long roleId, Long menuId) {
		// 构造角色-菜单-关联参数实体
		RoleMenuRef roleMenuRef = new RoleMenuRef();
		roleMenuRef.setRefId(refId);// Set 标识信息-关联Id[主键值]
		roleMenuRef.setOrgId(orgId);// Set 标识信息-机构Id
		roleMenuRef.setRoleId(roleId);// Set 关联信息-角色Id
		roleMenuRef.setMenuId(menuId);// Set 关联信息-菜单Id
		// 调用角色-菜单-关联DAO接口
		return this.roleMenuRefMapper.selectList(roleMenuRef);
	}

	public List<RoleMenuRef> queryListByRoleId(Long roleId) {
		return roleMenuRefMapper.queryListByRoleId(roleId);
	}

}